git删除commit方法和误删commit后的恢复方法 |
您所在的位置:网站首页 › git head损毁 › git删除commit方法和误删commit后的恢复方法 |
一、如果你在git上提交了错误的commit,不要慌,通过下面的方法可以回退到之前的commit
如果只误提交了一个commit, 直接执行 git reset --hard HEAD^这一条命令就OK了(但是这条命令会把最近一次commit的代码删除哦,如果要保留代码,请看本文最后面部分) 如果你要回滚多个 commit 可以使用下面的方法: 第一步:通过git log可以查看我们之前提交的commit_id: 第二步:复制你需要回滚的commit_id。不过windows下的命令行是不能复制文本的,为此你可以到github上查看仓库的commit历史,上面是可以直接复制的: 复制好后在命令行执行:git reset --hard git reset --hard 4458e09第三步:执行: git push origin HEAD --force 提交当前HEAD 这样就能够将错误的提交删除,回滚至其之前的代码 但是如果当你回滚代码以后发现commit_id复制错了或者回滚错了怎么办呢?不要慌!!!按下面的方法做:
第一步:执行 git reflog 你能在命令行中看到你的历史操作,复制你要恢复操作最前面的hash值 第二步:执行 git reset --hard 命令中最后要输的hash就是你要恢复的历史记录最前面黄色部分的hash值 比如: git reset --hard 4458e09这样就成功解决问题了。 但是上面的操作仍然有缺陷,我们经常遇到的情况是:在错误的分支写了大量代码,并且已经push到远程仓库,这个时候我们要的不仅是回退commit,并且要保留自己新写的代码并且合并到正确的分支上。 接下来不要眨眼,我们来演示如何解决问题: 第一步:找到你提交之前的最新commit id,执行如下命令: git reset --soft 4458e09这条命令会把你本地的当前分支回退到之前的commit,并且保留你在这条commit 之后写的代码。 第二步:执行git stash 将新写的代码放到缓存中 git stash第三步:把当前分支强行覆盖远程分支 git push --force第四步:切换到正确的开发分支,这里假设是dev分支 git checkout dev第五步:把缓存的代码从内存中 pop 出来 git stash pop执行完这五步,当前分支的错误提交就清理了,并且你的代码也回到了正确的dev分支。 但是,需要注意,这样的操作必须保证在你的错误提交之后别人没有提交代码,否则这样操作将会把别人正常提交的代码回退掉。 二、再补一下git reset 的相关参数:--mixed 意思是不删除工作空间改动代码,撤销commit ,并且撤销git add . 操作 这个是reset命令的默认参数,即git reset —mixed HEAD^ 和 git reset HEAD^ 效果是一样的 --soft 不删除工作空间改动代码,撤销commit, 撤销git add . --hard 删除工作空间代码,撤销commit,撤销git add . 注意,添加该参数后执行后,你最新提交的代码会从内存中删除 当然如果误删了可以通过上面的方法找回来。 三、最后再补充一些常用的git 命令1、git checkout 切换到目标分支,比如切换到 test 分支:git checkout test 同时可以用git checkout . 直接回到当前分支的最新commit代码,同时放弃未提交更改,但是这条命令在合并分支的时候请慎用。 2、git checkout -b 从当前分支创建并切换到一个新的分支,比如创建并切换到test分支: git checkout -b test 3、git push --up-stream origin 把一个远程没有的分支推送到远程仓库,比如新创建的test分支 git push --up-stream origin test 4、git branch -D 删除本地分支,例如删除本地test分支 git branch -D test 5、git push origin --delete 删除远程分支,仍然以删除远程test分支为例 git push origin --delete test |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |